import { defineStore } from 'pinia'
import { getuserinfoapi, getrouter } from '@/api/api'
import routerComponent from '@/router/routerComponent'
import router from '../../router'
import staticMenu from '@/utils/menu'

const routers = [
    // {
    //     "name": "/",
    //     "path": "/",
    //     "hidden": false,
    //     "component": "home",
    //     "redirect": "/index",
    //     "alwaysShow": false,
    //     "meta": {
    //         "title": "运营",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": ""
    //     },
    //     "children": [
    //         {
    //             "name": "Index",
    //             "path": "index",
    //             "hidden": false,
    //             "component": "index",
    //             "meta": {
    //                 "title": "运营首页",
    //                 "icon": "#",
    //                 "noCache": true,
    //                 "remark": "客户管理相关(新运营后台)"
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "Customer",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "home",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "客户",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": "客户相关"
    //     },
    //     "children": [
    //         {
    //             "name": "Clientslist",
    //             "path": "clientslist",
    //             "hidden": false,
    //             "component": "clients/clientslist",
    //             // "component": "ParentView",
    //             "meta": {
    //                 "title": "客户管理",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "客户管理相关(新运营后台)"
    //             }
    //         },
    //         {
    //             "name": "Cockpit",
    //             "path": "cockpit",
    //             "hidden": true,
    //             "component": "cockpit/cockpit",
    //             // "component": "ParentView",
    //             "meta": {
    //                 "title": "客户管理详情",
    //                 "icon": "#",
    //                 "noCache": true,
    //                 "remark": "客户管理详情"
    //             }
    //         },
    //         {
    //             "name": "Approval",
    //             "path": "approval",
    //             "hidden": false,
    //             "component": "approval/approval",
    //             // "component": "ParentView",
    //             "meta": {
    //                 "title": "审批管理",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "审批管理"
    //             }
    //         },
    //         {
    //             "name": "ReportClaimAdjuster",
    //             "path": "reportClaimAdjuster",
    //             "hidden": false,
    //             // "component": "reportClaimAdjuster/reportClaimAdjuster",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "报案理赔",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DealClient",
    //             "path": "dealClient",
    //             "hidden": false,
    //             // "component": "clients/dealClient/index",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "签单客户",
    //                 "icon": "el-icon-user",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DetailSaasPay",
    //             "path": "detailSaasPay",
    //             "hidden": true,
    //             // "component": "clients/dealClient/detailSaasPay",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "签单客户子弹发薪",
    //                 "icon": "el-icon-user",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DetailPeriodInsure",
    //             "path": "detailPeriodInsure",
    //             "hidden": true,
    //             // "component": "clients/dealClient/detailPeriodInsure",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "签单客户长期保",
    //                 "icon": "el-icon-user",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DetailWeInsure",
    //             "path": "detailWeInsure",
    //             "hidden": true,
    //             // "component": "clients/dealClient/detailWeInsure",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "签单客户日日保",
    //                 "icon": "el-icon-user",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DetailGroupInsure",
    //             "path": "detailGroupInsure",
    //             "hidden": true,
    //             // "component": "clients/dealClient/detailGroupInsure",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "签单客户团意保",
    //                 "icon": "el-icon-user",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DetailEleSign",
    //             "path": "detailEleSign",
    //             "hidden": true,
    //             // "component": "clients/dealClient/detailEleSign",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "签单客户电子签",
    //                 "icon": "el-icon-user",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "ClientPond",
    //             "path": "clientPond",
    //             "hidden": false,
    //             // "component": "clients/clientPond",
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "客户公池",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "MicroMind",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "微提醒",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": ""
    //     },
    //     "children": [
    //         {
    //             "name": "Handlingofreport",
    //             "path": "Handlingofreport",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "报案处理",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Paybybullet",
    //             "path": "Paybybullet",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "子弹发薪",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Longterminsurance",
    //             "path": "Longterminsurance",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "长期保",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Daytodayinsurance",
    //             "path": "Daytodayinsurance",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "日日保",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Groupaccidentinsurance",
    //             "path": "Groupaccidentinsurance",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "团意日保",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "Dashboard",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "数据表盘",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": ""
    //     },
    //     "children": [
    //         {
    //             "name": "DashboardSassPay",
    //             "path": "dashboardSassPay",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "子弹发薪",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DashboardPeriodInsure",
    //             "path": "dashboardPeriodInsure",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "长期保",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DashboardWeInsure",
    //             "path": "dashboardWeInsure",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "日日保",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DashboardGroupInsure",
    //             "path": "dashboardGroupInsure",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "团意日保",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DashboardEleSign",
    //             "path": "dashboardEleSign",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "电子签",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "Finance",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "财务",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": "财务相关"
    //     },
    //     "children": [
    //         {
    //             "name": "Reconciliation",
    //             "path": "reconciliation",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "保司对账",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "新运营pc"
    //             }
    //         },
    //         {
    //             "name": "Payroll",
    //             "path": "payroll",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "员工工资单",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "员工工资相关"
    //             }
    //         },
    //         {
    //             "name": "FinanceReceipt",
    //             "path": "financeReceipt",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "收款账户明细",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "收款账户明细"
    //             }
    //         },
    //         {
    //             "name": "FinanceInvoice",
    //             "path": "financeInvoice",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "发票管理",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "FinanceRebate",
    //             "path": "financeRebate",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "返利管理",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "返利管理"
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "Tool",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "工具",
    //         "icon": "#",
    //         "noCache": false,
    //         "remark": ""
    //     },
    //     "children": [
    //         {
    //             "name": "InsureView",
    //             "path": "insureView",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "保险数据看板",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "保险数据看板"
    //             }
    //         },
    //         {
    //             "name": "ClaimSettlementBoard",
    //             "path": "claimSettlementBoard",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "理赔率看板",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Blacklist",
    //             "path": "blacklist",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "黑名单",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Receipt",
    //             "path": "receipt",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "收款账户",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": "收款账户"
    //             }
    //         },
    //         {
    //             "name": "PolicyholderEnquiries",
    //             "path": "PolicyholderEnquiries",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "投保人员查询",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Promotionposter",
    //             "path": "promotionposter",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "推广海报",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "Whitelist",
    //             "path": "whitelist",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "白名单",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }  
    //         }
    //     ]
    // },
    // {
    //     "name": "Insurance",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "保险",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": ""
    //     },
    //     "children": [
    //         {
    //             "name": "LongInsureSet",
    //             "path": "longInsureSet",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "长期保设置",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "DayInsureSet",
    //             "path": "dayInsureSet",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "日保设置",
    //                 "icon": "#",
    //                 "noCache": false,
    //                 "remark": ""
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "Team",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "团队",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": ""
    //     },
    //     "children": [
    //         {
    //             "name": "Rankinglist",
    //             "path": "rankinglist",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "排行榜",
    //                 "icon": "#",
    //                 "noCache": true,
    //                 "remark": ""
    //             }
    //         },
    //         {
    //             "name": "TeamTarget",
    //             "path": "teamTarget",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "title": "目标",
    //                 "icon": "#",
    //                 "noCache": true,
    //                 "remark": ""
    //             }
    //         }
    //     ]
    // },
    // {
    //     "name": "Settings",
    //     "path": "/",
    //     "hidden": false,
    //     "redirect": "noRedirect",
    //     "component": "Layout",
    //     "alwaysShow": true,
    //     "meta": {
    //         "title": "设置",
    //         "icon": "#",
    //         "noCache": true,
    //         "remark": "人员设置相关(新运营后台)"
    //     },
    //     "children": [
    //         {
    //             "name": "Role",
    //             "path": "role",
    //             "hidden": false,
    //             "component": "ParentView",
    //             "meta": {
    //                 "titl ": "人员设置",
    //                 "icon": "#",
    //                 "noCache": true,
    //                 "remark": "人员设置相关(新运营后台)"
    //             }
    //         }
    //     ]
    // }
]

const modules = () => {
    return Object.assign(import.meta.glob('@/views/*.vue'), import.meta.glob('@/views/**/*.vue'))
}

const addSlash = (list: any) => {
    list.forEach((i: any) => {
        const name = i.path.replace(/\//, '')
        // if (i.component === 'Layout') {
        //     i.component = routerComponent.Layout
        // } else {
        //     i.component = routerComponent[name]
        // }
        // console.log(modules(), `/src/views/${i.component}.vue`);
        i.component = modules()[`/src/views/${i.component}.vue`]
        i.redirect = ''
        if (i.children) {
            i.path = '/'
        }
        if (i.path === '/') {
            i.redirect = i.children?.length && i.children?.[0].path
        }
        if (i.meta?.remark.startsWith('{') && i.meta?.remark.endsWith('}')) {
            console.log(2222, i.meta.remark)
            const json = JSON.parse(i.meta.remark)
            if (Object.hasOwnProperty.call(json, 'alwaysShow')) {
                i.alwaysShow = json.alwaysShow
            }
        }
        if (i.children) {
            addSlash(i.children)
        }
    })
}

export const useRouterStore = defineStore('routerInfo', {
    state: () => {
        return {
            routersInfo: [] as any,
            menuInfo: [] as any,
            routerData: [] as any,
            isAddRoute: false
        }
    },
    getters: {
        routerList(state) {
            return state.routersInfo
        },
        menuList(state) {
            console.log(888, state.menuInfo)
            return state.menuInfo
        }
    },
    actions: {  
        getRouters() {
            return new Promise(async (resolve, reject) => {
                // this.routerData = []
                // if (!this.routerData?.length) {
                    if (process.env.NODE_ENV === 'production') {
                        this.routerData = await getrouter()
                    } else {
                        this.routerData = staticMenu
                    }

                    // this.routerInfo = routers
                    addSlash(this.routerData)
                // }

                // this.addRouterInfo(this.routerData)
                // console.log(777, this.routerData);
                this.routersInfo = this.routerData
                this.menuInfo = this.routerData
                sessionStorage.setItem('menuInfo', JSON.stringify(this.routerData))
                resolve(this.routerData)
            })
        },
        addRouterInfo(routerList: any) {
            this.routersInfo = routerList
            this.menuInfo = routerList
        },
        setAddRoute(bl: boolean) {
            this.isAddRoute = bl
        }
    },
    persist: {
        enabled: true,
        strategies: [
            {
                key: 'routerInfo',
                storage: sessionStorage,
            },
        ],
    },
})
